/**
* -------------------------------------------------------------
* @author  jiao
* @date: 2021-12-31 15:04:01
* @description: Student service
* -------------------------------------------------------------
* @version 1.0.0
* @Copyright (c) 中科星图-版权所有
*/

package com.geovis.boot.service.demo.file.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.geovis.boot.service.demo.file.entity.Student;

/**
 * 事务处理接口
 * 以学生：成绩 为例， 学生:成绩  ==>  1:N
 *
 * 事务处理示例：
 *  * 本示例仅对单数据源统一事务为处理基础。多数据源、分布式事务处理后续补充。
 * @author jiao
 */
public interface IStudentService extends IService<Student> {



    /**
     * 场景一、学生、学生成绩必须同时删除，一方失败，同时回滚
     * 根据学生编号删除学生。同时删除学生成绩
     * @param id 学生编号
     * @return 删除数量
     */
    int deleteById(Integer id);

    /**
     * 场景二-1、要求删除学生成绩报错时，不影响学生的删除
     * 根据学生编号删除学生。同时删除学生成绩
     * @param id 学生编号
     * @return 删除数量
     */
    int deleteByIdNoTransactional1(Integer id);

    /**
     * 场景二-2、要求删除学生成绩,后续报错不会回滚学生成绩的删除
     * 根据学生编号删除学生。同时删除学生成绩
     * 删除学生为事务1，删除学生成绩为事务2.互不影响。
     * @param id 学生编号
     * @return 删除数量
     */
    int deleteByIdNoTransactional2(Integer id);

    /**
     * 场景三、手动事务回滚
     */
    int deleteByIdRollback(Integer id);
}
